package com.wpp.Test;

public class QuickTest1 {

    //首先传入一个数组进去
    public static void quickSort(int[] array){

        int len;//定义数组的长度
        if (array==null || (len=array.length) == 0 || len == 1 ){//判断数组是否有值

            return;
        }
        Sort(array,0,len-1);//调用排序

        for (int i : array) {
            System.out.println(i);
        }
    }

    public static void main(String args[]) {
        int[] a={2,4,5,6,2,1,5};
        QuickTest1.quickSort(a);
    }
    public static void Sort(int array[],int left,int right){


        //首先做一个判断
        if (left>right){
            return;
        }

        //定义基数
        int base=array[left];

        //初始化i,j
        int i=left,j=right;
        //定义一个临时变量
        int temp;

        while (i!=j){

            //从右边开始找小于base的数，如果找到了就停止，记录下j的值，后面交换要用
            while (array[j]>=base&&i<j){
                j--;
            }

            //开始从左边找大于base的数,如果找到了大于bases的数就停止寻找，记录下数字
            while (array[i]<=base&&i<j){
                i++;
            }


            //交换数字
            if (i<j) {
                temp = array[i];
                array[i] =array[j];
                array[j]=temp;
            }

        }

        //交换基数位置
        array[left]=array[j];
        array[j]=base;


        //左排序
        Sort(array,left,i-1);
        //右排序
        Sort(array,i+1,right);
    }





}
